/*
    auto 的for循环注意事项
*/
#include<bits/stdc++.h>
using namespace std;
int main(){
    // for (auto i : b) F(i);
    // for (auto i = std::begin(b); i != std::end(b); i++)
    // {
    //     F(*i);
    // }
    /*auto用冒号进行遍历的时候应该是按值传递
    拷贝了一份map的一个Key-Value这时无法对map内的数值进行操作更改
    而用auto iter = map.begin()时等于迭代器使用这时可以更改容器以下为参考代码*/
    
    
    
    std::map<int, int> Data;
    
    
    Data[1]=1,Data[2]=1,Data[3]=3,Data[4]=4;
    
    for (auto iter:Data)
    
        iter.second = 5;//这里不会修改map的值
    
    for (auto iter = Data.begin(); iter != Data.end(); iter++)
    
        iter->second = 5;//这里map内的值会变成5
    
    ///更新其实也可以传引用进去修改
    
    for (auto &iter:Data)
    
        iter.second = 5;//这里map内的值会变成5
    
    system("pause");
    
    return 0;
    
    
    
}